package com.xbongbong.paas.enums;

import com.xbongbong.i18n.util.I18nMessageUtil;
import lombok.Getter;

import java.util.Arrays;
import java.util.List;

/**
 * https://xbb.yuque.com/lfwuxq/vsf9sv/xxqpw7
 * https://alidocs.dingtalk.com/i/nodes/QjXmLRyz4G5VGnA0pwbXWZpaD19v6NK2?nav=spaces&navQuery=spaceId%3DO5pXB64OMkEoX7Zv
 * max表示为paas中字段使用有最大数量，也是整个pro项目最大的字段使用量，可以进行更改，但是更改需要和鲁江，卡特商量，如需更改请同步通知前端修改； saasMax表示saas中字段使用最大数量
 * @author zhouwq
 * @date 2019/6/21 16:09
 */
@Getter
public enum EsAliasEnum {
    /**
     * EsAlias
     */
    //text最大允许90个字段，表单设计模板里最多允许80（包含系统字段和自定义字段）,80到90之间预留的系统字段；自定义表单允许拖到90（因为不需要做系统预留）
    TEXT("text", "enum.esAlias.description.text", 90, 80, 100, 130),
    //原来是40
    NUM("num", "enum.esAlias.description.num", 70, 60,80, 70),
    //长整形留作业务使用，前端无法自增
    LONG("long", "enum.esAlias.description.long", 10, 10, 10, 10),
    //原来是2
    ADDRESS("address", "enum.esAlias.description.address", 2, 2, 2, 2),
    //原来是2
    GEO("geo", "enum.esAlias.description.geo", 2, 2, 2, 2),
    //原来是20
    DATE("date", "enum.esAlias.description.date", 20, 20, 30, 20),
    //
    SUB_FORM("subForm", "enum.esAlias.description.sub_form", 8, 8, 8, 8),
    //原来是10
    FILE("file", "enum.esAlias.description.file", 10, 10, 10, 10),
    //原来是30
    ARRAY("array", "enum.esAlias.description.array", 40, 30,40, 40),
    OTHER("other", "enum.esAlias.description.other", 20, 15, 20, 20),
    OPTION("option", "enum.esAlias.description.option", 1, 1, 1, 1),
    /**
     * 现在地址和定位的存储无差别
     */
    LOCATION("location","enum.esAlias.description.address",4, 4, 4, 4),
    MY_TEAM("myTeam","enum.fieldType.description.team_user",6, 6, 6, 6),
    //电话内TEXT的数量（text_1存储类型，text_2电话）
    PHONE_TEXT("phoneText","enum.esAlias.description.text",10, 2, 10, 10),
    PHONE_NUM("phoneNum","enum.esAlias.description.text",5, 0,5,5),
    //富文本不进ES,但仍需加入枚举返回给前端
    RICH_TEXT("richText","enum.esAlias.description.rich_text",1, 1,1,1)
    ;
    EsAliasEnum(String esAlias, String description,Integer max, Integer saasMax, Integer total, Integer separateIndexMax) {
        this.esAlias = esAlias;
        this.description = description;
        this.max = max;
        this.saasMax = saasMax;
        this.total = total;
        this.separateIndexMax = separateIndexMax;
    }

    /**
     * 字段
     */
    private String esAlias;
    /**
     * 字段描述
     */
    private String description;
    /**
     * 最大个数
     */
    private Integer max;
    /**
     * saas系统表单的最大值
     */
    private Integer saasMax;

    /**
     * 总数
     * 系统表单预留值：total-saasMax
     * 自定义表单预留值：total-max
     */
    private Integer total;

    /**
     * 单独索引的最大值
     */
    private Integer separateIndexMax;



    public static EsAliasEnum getByEsAlias(String esAlias){
        for (EsAliasEnum e : values()) {
            if (e.getEsAlias().equals(esAlias)) {
                return e;
            }
        }
        return null;
    }

    public String getDescription() {
        return I18nMessageUtil.getMessage(description);
    }

    /**
     * 前端主字段数量限制
     * @return
     */
    public static List<EsAliasEnum> getEsAliasList() {
        return Arrays.asList(EsAliasEnum.TEXT, EsAliasEnum.NUM, EsAliasEnum.ARRAY, EsAliasEnum.FILE, EsAliasEnum.DATE, EsAliasEnum.GEO, EsAliasEnum.OTHER, EsAliasEnum.SUB_FORM, EsAliasEnum.ADDRESS, EsAliasEnum.RICH_TEXT);
    }


}
